package com.ruoyi.clinic.dto.clinicdoctor;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 医生信息导入模板DTO
 */
@Data
public class ClinicDoctorImportDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = -8189885954669404957L;

    /**
     * 医生姓名
     */
    @Size(max = 20, message = "医生姓名，字符长度最大为20")
    @NotBlank(message = "医生姓名不能为空")
    @Excel(name = "医生姓名")
    private String doctorName;

    /**
     * 医生身份证号
     */
    @Size(max = 30, message = "医生身份证号，字符长度最大为30")
    @NotBlank(message = "医生身份证号不能为空")
    @Excel(name = "医生身份证号", width = 30)
    private String identityCardNum;

    /**
     * 科室
     */
    @Size(max = 20, message = "科室，字符长度最大为20")
    @NotBlank(message = "科室不能为空")
    @Excel(name = "科室")
    private String departmentName;

    /**
     * 医生职称
     */
    @Size(max = 20, message = "医生职称，字符长度最大为20")
    @NotBlank(message = "医生职称不能为空")
    @Excel(name = "医生职称")
    private String doctorTitle;

    /**
     * 年限(是否满5年): 0:不满5年;1:满5年
     */
    @NotBlank(message = "年限-是否满5年(是/否)不能为空")
    @Excel(name = "年限-是否满5年(是/否)", width = 25, readConverterExp = "0=否,1=是")
    private String isFiveExperience;

    /**
     * 医生签字日期
     */
    @NotNull(message = "医生签字日期(yyyy-MM-dd)不能为空")
    @Excel(name = "医生签字日期(yyyy-MM-dd)", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date doctorVisaDate;

    /**
     * 是否全职(0:否;1:是)
     */
    @NotBlank(message = "是否全职(是/否)不能为空")
    @Excel(name = "是否全职(是/否)", readConverterExp = "0=否,1=是")
    private String isFullTimeJob;

    /**
     * 是否负责人(0:否;1:是)
     */
    @NotBlank(message = "是否负责人(是/否)不能为空")
    @Excel(name = "是否负责人(是/否)", readConverterExp = "0=否,1=是")
    private String isDirector;

    /**
     * 是否法人(0:否;1:是)
     */
    @NotBlank(message = "是否法人(是/否)不能为空")
    @Excel(name = "是否法人(是/否)", readConverterExp = "0=否,1=是")
    private String isLegalPerson;

    /**
     * 多点类型(1:唯一点;2:多点)
     */
    @NotBlank(message = "多点类型(唯一点/多点)不能为空")
    @Excel(name = "多点类型(唯一点/多点)", width = 25, readConverterExp = "1=唯一点,2=多点")
    private String pointType;

    /**
     * 是否到场(0:否;1:是)
     */
    @NotBlank(message = "是否到场(是/否)不能为空")
    @Excel(name = "是否到场(是/否)", readConverterExp = "0=否,1=是")
    private String isPresent;

    /**
     * 所在省份ID
     */
    private Long provinceId;

    /**
     * 所在省份名称
     */
    @Size(max = 30, message = "所在省份名称，字符长度最大为30")
    @NotBlank(message = "所在省份名称不能为空")
    @Excel(name = "所在省份名称")
    private String provinceName;

    /**
     * 所在城市ID
     */
    private Long cityId;

    /**
     * 所在城市名称
     */
    @Size(max = 30, message = "所在城市名称，字符长度最大为30")
    @NotBlank(message = "所在城市名称不能为空")
    @Excel(name = "所在城市名称")
    private String cityName;

    /**
     * 期望薪水
     */
    @Size(max = 20, message = "所在城市名称，字符长度最大为20")
    @NotNull(message = "期望薪水不能为空")
    @Excel(name = "期望薪水", cellType = Excel.ColumnType.STRING)
    private String expectSalaryStr;

    /**
     * 手机号
     */
    @Size(max = 20, message = "手机号，字符长度最大为20")
    @Excel(name = "手机号", width = 30)
    private String mobile;

    /**
     * 微信号
     */
    @Size(max = 60, message = "微信号，字符长度最大为60")
    @NotBlank(message = "手机号不能为空")
    @Excel(name = "微信号", width = 30)
    private String weixin;

    /**
     * 业务员ID
     */
    private Long salesmanId;

    /**
     * 医生照片路径
     */
    private String doctorImage;

    /**
     * 其他附件路径
     */
    private String otherImage;

    /**
     * 创建部门
     */
    private Long createDept;

    /**
     * 创建人ID
     */
    private Long createById;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新者ID
     */
    private Long updateById;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 备注
     */
    @Size(max = 500, message = "备注，字符长度最大为500")
    @Excel(name = "备注", width = 35)
    private String remark;
}
